package modell;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "TB_CONSTRUTORA")
public class Construtora {

	// CONSTRUTOR VAZIO
	public Construtora() {
	}
	
	public Construtora(String razaoSocial, String cnpj, String logo,
			boolean status, String cep, String endereco, int numero,
			String complemento, String telefone, modell.Cidade cidade,
			String email, String site, Date dataCadastro) {
		super();
		RazaoSocial = razaoSocial;
		Cnpj = cnpj;
		Logo = logo;
		Status = status;
		Cep = cep;
		Endereco = endereco;
		Numero = numero;
		Complemento = complemento;
		Telefone = telefone;
		Cidade = cidade;
		Email = email;
		Site = site;
		DataCadastro = dataCadastro;
	}



	@Id
	@GeneratedValue
	private Integer Id;
	
	@Column(name="CON_CEP", nullable=false)
	private String Cep;
	
	@Column(name = "CON_CNPJ", nullable = false)
	private String Cnpj;
	
	@Column(name="CON_COMPLEMENTO", length=100)
	private String Complemento;
	
	@Column(name = "CON_DTCADASTRO", nullable = false)
	private Date DataCadastro;
	
	@Column(name="CON_EMAIL", length=60)
	private String Email;
	
	@Column(name="CON_ENDERECO", nullable=false, length=100)
	private String Endereco;
	
	@Column(name="CON_NUMERO", nullable=false)
	private int Numero;

	@Column(name = "CON_RAZAOSOCIAL", nullable = false)
	private String RazaoSocial;

	@Column(name="CON_SITE", length=100)
	private String Site;
	
	@Column(name="CON_STATUS")
	private boolean Status;
	
	@Column(name="CON_TELEFONE")
	private String Telefone;

	@ManyToOne
	@JoinColumn(name="ID_CIDADE", nullable=false)
	private Cidade Cidade;
	
	@Column(name = "CON_LOGO")
	private String Logo;
	

	public Integer getId() {
		return Id;
	}

	public void setId(Integer id) {
		Id = id;
	}

	public String getRazaoSocial() {
		return RazaoSocial;
	}

	public void setRazaoSocial(String razaoSocial) {
		RazaoSocial = razaoSocial;
	}

	public String getCnpj() {
		return Cnpj;
	}

	public void setCnpj(String cnpj) {
		Cnpj = cnpj;
	}

	public String getLogo() {
		return Logo;
	}

	public void setLogo(String logo) {
		Logo = logo;
	}

	public Date getDataCadastro() {
		return DataCadastro;
	}

	public void setDataCadastro(Date dataCadastro) {
		DataCadastro = dataCadastro;
	}

	public String getCep() {
		return Cep;
	}

	public void setCep(String cep) {
		Cep = cep;
	}

	public String getComplemento() {
		return Complemento;
	}

	public void setComplemento(String complemento) {
		Complemento = complemento;
	}

	public String getEmail() {
		return Email;
	}

	public void setEmail(String email) {
		Email = email;
	}

	public String getEndereco() {
		return Endereco;
	}

	public void setEndereco(String endereco) {
		Endereco = endereco;
	}

	public int getNumero() {
		return Numero;
	}

	public void setNumero(int numero) {
		Numero = numero;
	}

	public String getSite() {
		return Site;
	}

	public void setSite(String site) {
		Site = site;
	}

	public boolean isStatus() {
		return Status;
	}

	public void setStatus(boolean status) {
		Status = status;
	}

	public String getTelefone() {
		return Telefone;
	}

	public void setTelefone(String telefone) {
		Telefone = telefone;
	}

	public Cidade getCidade() {
		return Cidade;
	}

	public void setCidade(Cidade cidade) {
		Cidade = cidade;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((Cep == null) ? 0 : Cep.hashCode());
		result = prime * result + ((Cidade == null) ? 0 : Cidade.hashCode());
		result = prime * result + ((Cnpj == null) ? 0 : Cnpj.hashCode());
		result = prime * result
				+ ((Complemento == null) ? 0 : Complemento.hashCode());
		result = prime * result
				+ ((DataCadastro == null) ? 0 : DataCadastro.hashCode());
		result = prime * result + ((Email == null) ? 0 : Email.hashCode());
		result = prime * result
				+ ((Endereco == null) ? 0 : Endereco.hashCode());
		result = prime * result + ((Id == null) ? 0 : Id.hashCode());
		result = prime * result + ((Logo == null) ? 0 : Logo.hashCode());
		result = prime * result + Numero;
		result = prime * result
				+ ((RazaoSocial == null) ? 0 : RazaoSocial.hashCode());
		result = prime * result + ((Site == null) ? 0 : Site.hashCode());
		result = prime * result + (Status ? 1231 : 1237);
		result = prime * result
				+ ((Telefone == null) ? 0 : Telefone.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Construtora other = (Construtora) obj;
		if (Cep == null) {
			if (other.Cep != null)
				return false;
		} else if (!Cep.equals(other.Cep))
			return false;
		if (Cidade == null) {
			if (other.Cidade != null)
				return false;
		} else if (!Cidade.equals(other.Cidade))
			return false;
		if (Cnpj == null) {
			if (other.Cnpj != null)
				return false;
		} else if (!Cnpj.equals(other.Cnpj))
			return false;
		if (Complemento == null) {
			if (other.Complemento != null)
				return false;
		} else if (!Complemento.equals(other.Complemento))
			return false;
		if (DataCadastro == null) {
			if (other.DataCadastro != null)
				return false;
		} else if (!DataCadastro.equals(other.DataCadastro))
			return false;
		if (Email == null) {
			if (other.Email != null)
				return false;
		} else if (!Email.equals(other.Email))
			return false;
		if (Endereco == null) {
			if (other.Endereco != null)
				return false;
		} else if (!Endereco.equals(other.Endereco))
			return false;
		if (Id == null) {
			if (other.Id != null)
				return false;
		} else if (!Id.equals(other.Id))
			return false;
		if (Logo == null) {
			if (other.Logo != null)
				return false;
		} else if (!Logo.equals(other.Logo))
			return false;
		if (Numero != other.Numero)
			return false;
		if (RazaoSocial == null) {
			if (other.RazaoSocial != null)
				return false;
		} else if (!RazaoSocial.equals(other.RazaoSocial))
			return false;
		if (Site == null) {
			if (other.Site != null)
				return false;
		} else if (!Site.equals(other.Site))
			return false;
		if (Status != other.Status)
			return false;
		if (Telefone == null) {
			if (other.Telefone != null)
				return false;
		} else if (!Telefone.equals(other.Telefone))
			return false;
		return true;
	}


	
	
	
}
